package com.study.common;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.SqlReporter;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.druid.DruidStatViewHandler;
import com.jfinal.render.ViewType;
import com.study.model.Student;

public class JfinalConfig extends JFinalConfig{
	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		// 加载少量必要配置，随后可用getProperty(...)获取值
		loadPropertyFile("db.conf");//加载属性文件
		me.setDevMode(getPropertyToBoolean("devMode", getPropertyToBoolean("devMode")));
//		me.setError404View("common/404.htm");
//		me.setError500View("common/500.htm");
		//jfinal视图默认是freemark
		//me.setViewType(ViewType.JSP);

	}

	public void afterJFinalStart() {
		// 触发监控线程启动
		// TODO 改为quartz定时任务
		// UserMsgConf.getConfMsg(0);
	}

	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
//		me.add("/", CommonController.class);
//        me.add("/demo", HelloWorldController.class);
	}

	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
        //me.add(new SpringPlugin("classpath*:applicationContext.xml"));
//        me.add(new SpringPlugin("classpath:applicationContext.xml"));


		// 配置Druid数据库连接池插件
//		DruidPlugin dp = new DruidPlugin(getProperty("jdbcUrl"),
//				getProperty("user"), getProperty("password"));
//		dp.addFilter(new StatFilter());
//		WallFilter wall = new WallFilter();
//		wall.setDbType("mysql");
//		dp.addFilter(wall);
//		dp.setFilters("stat");
//		me.add(dp);
		
		C3p0Plugin dp = new C3p0Plugin(getProperty("url"),
				getProperty("user"), getProperty("password"));
		dp.setDriverClass("com.mysql.jdbc.Driver");
		// 配置ActiveRecord插件
		me.add(dp);
		ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);

		arp.setShowSql(true);
		SqlReporter.setLogger(true);
		// com.jfiactionreport

		me.add(arp);

		// 定时任务插件
//		me.add(new QuartzPlugin());

		
		arp.addMapping("student", Student.class);
	}

	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		
	}

	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me) {
		DruidStatViewHandler dvh = new DruidStatViewHandler("/dddb");
		me.add(dvh);
		
		//LogHandler log = new LogHandler();
		//me.add(log);
	}

	/**
	 * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main
	 * 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
	 */
	public static void main(String[] args) {
		JFinal.start("webapp", 8099, "/", -1);
	}
}
